package com.bird.tcp;

import com.bird.file.serializablestream.Employee;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * @author sijunqiang
 * @data 2021/8/1 16:30
 * @description: 网络通信之 客户端
 */
public class Socket {


    //1. public InputStream getInputStream() ：获取字节输入流，用来读数据，接收数据
    //2. public OutputStream getOutputStream() ：  获取字节输出流，用来写数据，发送数据
    //3. public void shutdownOutput() ： 关闭输出流，并且发送结束标记，但是连接不断
    //4. public void close() ：关闭socket连接，连接不可再使用。也将关闭相关的InputStream和OutputStream 。


    //客户端
    public static void main(String[] args) throws IOException {

        System.out.println("客户端 开发发送数据");

        // 创建socket对象 确定连接哪台ip
        java.net.Socket client = new java.net.Socket("localhost", 6666);

        //获取流对象 输出流
        OutputStream outputStream = client.getOutputStream();

        //写出数据
        Employee employee = new Employee("司军强", "奋斗的小鸟", "26");
        String body = employee.toString();
        outputStream.write(body.getBytes());

        //==========接收服务端数据====

        InputStream inputStream = client.getInputStream();

        int len;
        byte[] bytes = new byte[1024];

        while ((len = inputStream.read(bytes)) != -1) {
            System.out.println(new String(bytes, 0, len));
        }

        // 关闭资源
        inputStream.close();
        outputStream.close();
        client.close();
    }
}

